package com.yilizhiyou.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yilizhiyou.entity.VoiceGuide;

import java.util.List;
import java.util.Map;

/**
 * 语音导览服务接口
 * 
 * @author 伊犁智游开发团队
 * @since 1.0.0
 */
public interface VoiceGuideService extends IService<VoiceGuide> {

    /**
     * 根据景区ID获取语音导览列表
     * 
     * @param scenicSpotId 景区ID
     * @return 语音导览列表
     */
    List<VoiceGuide> getVoiceGuidesByScenicSpotId(Long scenicSpotId);

    /**
     * 根据景区ID和语言获取语音导览
     * 
     * @param scenicSpotId 景区ID
     * @param language 语言
     * @return 语音导览列表
     */
    List<VoiceGuide> getVoiceGuidesByScenicSpotIdAndLanguage(Long scenicSpotId, String language);

    /**
     * 创建语音导览
     * 
     * @param voiceGuide 语音导览信息
     * @return 创建结果
     */
    boolean createVoiceGuide(VoiceGuide voiceGuide);

    /**
     * 更新语音导览
     * 
     * @param voiceGuide 语音导览信息
     * @return 更新结果
     */
    boolean updateVoiceGuide(VoiceGuide voiceGuide);

    /**
     * 删除语音导览
     * 
     * @param id 语音导览ID
     * @return 删除结果
     */
    boolean deleteVoiceGuide(Long id);

    /**
     * 文本转语音
     * 
     * @param text 文本内容
     * @param language 语言
     * @param voiceType 语音类型
     * @return 音频文件URL
     */
    String textToSpeech(String text, String language, String voiceType);

    /**
     * 语音转文本
     * 
     * @param audioUrl 音频文件URL
     * @param language 语言
     * @return 识别结果
     */
    String speechToText(String audioUrl, String language);

    /**
     * 播放语音导览
     * 
     * @param id 语音导览ID
     * @return 播放结果
     */
    boolean playVoiceGuide(Long id);

    /**
     * 获取语音导览统计信息
     * 
     * @return 统计信息
     */
    Map<String, Object> getVoiceGuideStatistics();
}
